//
//  Shape.h
//  GameEngine
//
//  Created by Nicolas Battelli on 2/21/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#ifndef GameEngine_Shape_h
#define GameEngine_Shape_h


#include <list>
#include "Point2D.h"

#include "Matrix4f"


#warning cambiar este tipo de datos
#define Point2Ds

#warning falta la clase de Screen
#define screen



enum BlendMode {
    BM_ADDITIVE,   //Blending aditivo
    BM_NORMAL,     //Blending normal (solido)
    BM_SUBTRACTIVE //Blending negativo
};

class Shape {
public:
    //Properties

    //Mthods
    Shape();
    //Shape(Point2Ds);
    ~Shape();
    //int addChild(*Shape);
    int removeChild();
    Shape *getChild();
    int setParent();
    int setBlendMode();

    void setPosition(Point2Ds);
    getPosition();

    void setAngle(float);
    float getAngle();

    void setScale(Point2Ds);
    float getScale();

    int verticesCount();

    void renderInScreen (screen);
    void update(int); //WTF!

private:
    //static SpriteSheetManager spriteSheetManager;



    //Properties



    BlendMode *blendMode;
    Shape *parent;
    //zOrderList children;

    int zOrder;

    //Methods

protected:
    Matrix4f transformationMatrix;

};


#endif
